package com.jn.mvvm2.module;

import android.content.Context;

import androidx.room.Room;

import com.jn.mvvm2.dao.QAndADao;
import com.jn.mvvm2.database.AppDatabase;

import javax.inject.Singleton;

import dagger.Module;
import dagger.Provides;
import dagger.hilt.InstallIn;
import dagger.hilt.android.qualifiers.ApplicationContext;
import dagger.hilt.components.SingletonComponent;

@Module
@InstallIn(SingletonComponent.class) // 全局单例
public class DatabaseModule {
    // 提供数据库实例（单例）
    @Provides
    @Singleton
    AppDatabase provideDatabase(@ApplicationContext Context context) {
        return Room.databaseBuilder(
                        context,
                        AppDatabase.class,
                        "demo_db"
                ).allowMainThreadQueries() // 允许主线程操作（实际项目禁用）
                .build();
    }

    // 提供 DAO（依赖数据库）
    @Provides
    QAndADao provideUserDao(AppDatabase db) {
        return db.qAndADao();
    }
}
